	org  07c00h					; 加载到 0:7C00 处
	; 下面是跳转指令（占3B）：
	jmp short LABEL_START		; 跳转到代码起始处
	nop							; 这个nop（无操作指令）不可少（占1个字节位）
	; 下面是OEM名串（占8B）：
	BS_OEMName	DB 'MyOS CXF' ; OEM String, 必须 8 个字节（不足补空格）
	; 下面是 FAT12 磁盘的头（BPB+EBPB，占51B）
	BPB_BytsPerSec	DW 512		; 每扇区字节数
	BPB_SecPerClus	DB 8		; 每簇多少扇区
	BPB_RsvdSecCnt	DW 1		; Boot记录占用多少扇区
	BPB_NumFATs	DB 2		; 共有多少 FAT 表
	BPB_RootEntCnt	DW 512		; 根目录文件数最大值
	BPB_TotSec16	DW 20160		; 逻辑扇区总数
	BPB_Media		DB 0xF8		; 介质描述符
	BPB_FATSz16	DW 8		; 每FAT扇区数
	BPB_SecPerTrk	DW 63		; 每磁道扇区数
	BPB_NumHeads	DW 2		; 磁头数(盘面数)
	BPB_HiddSec		DD 0		; 隐藏扇区数
	BPB_TotSec32	DD 0		; BPB_TotSec16为0时这个值记录扇区数
	BS_DrvNum		DB 0x80		; 中断13h的驱动器号（硬/U盘时为0x80）
	BS_Reserved1		DB 0		; 未使用
	BS_BootSig		DB 29h		; 扩展引导标记 (29h)
	BS_VolID		DD 25800016h; 卷序列号
	BS_VolLab		DB 'MyOS System'; 卷标, 必须 11 个字节（不足补空格）
	BS_FileSysType	DB 'FAT16   '	; 文件系统类型, 必须 8个字节（不足补空格）  

LABEL_START:
	mov	ax, cs		; 置DS和ES=CS
	mov	ds, ax
	mov	es, ax
    call	ScrollPg		; 向上滚动显示页	
	call	DispStr		; 调用显示字符串例程
	jmp	$			; 无限循环
ScrollPg: ; 清屏例程
	mov	ah, 6			; 功能号
	mov	al, 0			; 滚动的文本行数（0=整个窗口）
	mov bh,0fh		; 设置插入空行的字符颜色为黑底亮白字
	mov ch, 0			; CH=行号、CL=列号
	mov cl, 0			; 窗口左上角的(行号，列号) = (0, 0)
	mov dh, 24		; 窗口右下角的行号，文本屏幕25行，行号=0~24
	mov dl, 79		; 窗口右下角的列号，文本屏幕80列，列号=0~79
	int 10h			; 显示中断
	ret
DispStr:
	mov ah,13h 		; BIOS中断的功能号（显示字符串）
	mov al,1 			; 光标放到串尾
	mov bh,0 		; 页号=0
	mov bl,0ch 		; 字符颜色=黑底亮红字
	mov cx,24 		; 串长=16
	mov dx,0 		; 显示串的起始位置（0，0）：DH=行号、DL=列号
	mov bp,BootMsg	; ES:BP=串地址
	int 10h 			; 调用10H号显示中断
	ret				; 从例程返回
BootMsg:  db  "Hello, my hd OS world!" ; 显示用字符串

times 446-($ - $$) db 0 ; 填充剩余主引导记录(446B)余下部分 with 0
; 磁盘分区表
	DPT_Enable DB 0x80       ; 分区是否激活（0x80或0）
	DPT_StartHeadNumber DB 0 ; 开始磁头号
	DPT_StartSecCylinNumber DW 0x0101; 开始扇区号（低字节的低6位）和柱面号（其余10位，其中低位字节的高2位为其第9、10位）
	DPT_PartitionType DB 4; 分区类型（如：0x01 = FAT12、0x04/0x06/0x0E = FAT16、0x0B/0x0C = FAT32、0x07 = NTFS/ exFAT、0x05/0x0F = 扩展、0x83 = Linux、0xEE = GPT）
	DPT_endHeadNumber DB 1 ; 结束磁头号
	DPT_EndSecCylinNumber DW 0x9F3F ; 结束扇区号（低字节的低6位）和柱面号（其余10位，其中低位字节的高2位为其第9、10位）
	DPT_LBAvalue DD 126 ; 分区起始地址的LBA（逻辑块地址）值（扇区序号）
	DPT_PartitionSize DD 20034 ; 分区大小 (总扇区数)
times 510-($-$$) db 0	; 用0填充剩下的扇区空间
db 	55h, 0aah			; 引导扇区结束标志

; 填充主引导扇区后面的125个扇区的空白
	times 512*125 db 0

; 第二个柱面
; 分区引导扇区(占1个扇区)
; ???
_SEG:
	org  07c00h					; 加载到 0:7C00 处
	; 下面是跳转指令（占3B）：
	jmp short LABEL_START2		; 跳转到代码起始处
	nop							; 这个nop（无操作指令）不可少（占1个字节位）
	; 下面是OEM名串（占8B）：
	_BS_OEMName	DB 'MyOS CXF' ; OEM String, 必须 8 个字节（不足补空格）
	; 下面是 FAT12 磁盘的头（BPB+EBPB，占51B）
	_BPB_BytsPerSec	DW 512		; 每扇区字节数
	_BPB_SecPerClus	DB 8		; 每簇多少扇区
	_BPB_RsvdSecCnt	DW 1		; Boot记录占用多少扇区
	_BPB_NumFATs	DB 2		; 共有多少 FAT 表
	_BPB_RootEntCnt	DW 512		; 根目录文件数最大值
	_BPB_TotSec16	DW 20160		; 逻辑扇区总数
	_BPB_Media		DB 0xF8		; 介质描述符
	_BPB_FATSz16	DW 8		; 每FAT扇区数
	_BPB_SecPerTrk	DW 63		; 每磁道扇区数
	_BPB_NumHeads	DW 2		; 磁头数(盘面数)
	_BPB_HiddSec		DD 0		; 隐藏扇区数
	_BPB_TotSec32	DD 0		; BPB_TotSec16为0时这个值记录扇区数
	_BS_DrvNum		DB 0x80		; 中断13h的驱动器号（硬/U盘时为0x80）
	_BS_Reserved1		DB 0		; 未使用
	_BS_BootSig		DB 29h		; 扩展引导标记 (29h)
	_BS_VolID		DD 25800016h; 卷序列号
	_BS_VolLab		DB 'Hello Hello'; 卷标, 必须 11 个字节（不足补空格）
	_BS_FileSysType	DB 'FAT16   '	; 文件系统类型, 必须 8个字节（不足补空格）  
LABEL_START2:
	mov	ax, cs		; 置DS和ES=CS
	mov	ds, ax
	mov	es, ax
	call	DispStr2		; 调用显示字符串例程
	jmp	$			; 无限循环
DispStr2:
	mov ah,13h 		; BIOS中断的功能号（显示字符串）
	mov al,1 			; 光标放到串尾
	mov bh,0 		; 页号=0
	mov bl,0ch 		; 字符颜色=黑底亮红字
	mov cx,18 		; 串长=16
	mov dx,0 		; 显示串的起始位置（0，0）：DH=行号、DL=列号
	mov bp,BootMsg2	; ES:BP=串地址
	int 10h 			; 调用10H号显示中断
	ret				; 从例程返回
BootMsg2:  db  "Hello, MyOS world!" ; 显示用字符串
times 510-($-_SEG) db 0	; 用0填充剩下的扇区空间
db 	55h, 0aah			; 分区引导扇区结束标志

; 填充两个FAT表的头两个项（每个FAT占9个扇区）
	db 0f8h, 0ffh, 0ffh			; 介质描述符（F8h）和Fh、结束簇标志项FFFh
	times 512*8-3		db	0	; 用0填充FAT#1剩下的空间
	db 0f8h, 0ffh, 0ffh			; 介质描述符（F8h）和Fh、结束簇标志项FFFh
	times 512*8-3		db	0	; 用0填充FAT#2剩下的空间
; 根目录中的卷标条目
	db 'HELLO HELLO' 			; 卷标, 必须 11 个字节（不足补空格）
	db 8						; 文件属性值（卷标条目的为08h）
	dw 0,0,0,0,0				; 10个保留字节
	dw 75A0h,4A7Fh			; 创建时间，设为2017年3月31日14时45分0秒
	dw 0						; 开始簇号（卷标条目的必需为0）
	dd 0						; 文件大小（也设为0）